/*
 * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package top.continew.admin.cakerun.model.resp;

import lombok.Data;

import io.swagger.v3.oas.annotations.media.Schema;

import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;

import top.continew.admin.common.base.model.resp.BaseDetailResp;
import java.io.Serial;
import java.time.*;
import java.math.BigDecimal;

/**
 * 订单明细详情信息
 *
 * @author tangyu
 * @since 2025/07/19 16:39
 */
@Data
@ExcelIgnoreUnannotated
@Schema(description = "订单明细详情信息")
public class OrderDetailDetailResp extends BaseDetailResp {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 
     */
    @Schema(description = "")
    @ExcelProperty(value = "")
    private Integer cakerunAccountId;

    /**
     * 业务时间
     */
    @Schema(description = "业务时间")
    @ExcelProperty(value = "业务时间")
    private LocalDate businessTime;

    /**
     * 自动付款标识
     */
    @Schema(description = "自动付款标识")
    @ExcelProperty(value = "自动付款标识")
    private String autoPay;

    /**
     * 服务费返还
     */
    @Schema(description = "服务费返还")
    @ExcelProperty(value = "服务费返还")
    private BigDecimal serviceFeeRebate;

    /**
     * 添加时间
     */
    @Schema(description = "添加时间")
    @ExcelProperty(value = "添加时间")
    private LocalDateTime addTime;

    /**
     * 订单ID
     */
    @Schema(description = "订单ID")
    @ExcelProperty(value = "订单ID")
    private String orderId;

    /**
     * 优惠金额
     */
    @Schema(description = "优惠金额")
    @ExcelProperty(value = "优惠金额")
    private BigDecimal discountAmount;

    /**
     * 原始业务类型
     */
    @Schema(description = "原始业务类型")
    @ExcelProperty(value = "原始业务类型")
    private String originalBizType;

    /**
     * 政府优惠金额
     */
    @Schema(description = "政府优惠金额")
    @ExcelProperty(value = "政府优惠金额")
    private BigDecimal governmentDiscountAmount;

    /**
     * 申诉返还
     */
    @Schema(description = "申诉返还")
    @ExcelProperty(value = "申诉返还")
    private String disputeAppealBack;

    /**
     * 账户历史ID
     */
    @Schema(description = "账户历史ID")
    @ExcelProperty(value = "账户历史ID")
    private String accountHistoryId;

    /**
     * 代理佣金金额
     */
    @Schema(description = "代理佣金金额")
    @ExcelProperty(value = "代理佣金金额")
    private BigDecimal agentCommissionAmount;

    /**
     * 结算状态及付款日期
     */
    @Schema(description = "结算状态及付款日期")
    @ExcelProperty(value = "结算状态及付款日期")
    private String traceSettleStatusWithPayDate;

    /**
     * 公益金
     */
    @Schema(description = "公益金")
    @ExcelProperty(value = "公益金")
    private BigDecimal publicBenefitFee;

    /**
     * 流水ID
     */
    @Schema(description = "流水ID")
    @ExcelProperty(value = "流水ID")
    private String traceId;

    /**
     * 押金金额
     */
    @Schema(description = "押金金额")
    @ExcelProperty(value = "押金金额")
    private BigDecimal depositAmount;

    /**
     * 美团退款金额
     */
    @Schema(description = "美团退款金额")
    @ExcelProperty(value = "美团退款金额")
    private BigDecimal mtRefund;

    /**
     * 配送优惠金额
     */
    @Schema(description = "配送优惠金额")
    @ExcelProperty(value = "配送优惠金额")
    private BigDecimal deliverDiscountFee;

    /**
     * 争议订单号
     */
    @Schema(description = "争议订单号")
    @ExcelProperty(value = "争议订单号")
    private String disputeOrderNo;

    /**
     * 结算周期说明
     */
    @Schema(description = "结算周期说明")
    @ExcelProperty(value = "结算周期说明")
    private String period;

    /**
     * 是否需要发票
     */
    @Schema(description = "是否需要发票")
    @ExcelProperty(value = "是否需要发票")
    private Boolean needInvoiceFlag;

    /**
     * 实付金额
     */
    @Schema(description = "实付金额")
    @ExcelProperty(value = "实付金额")
    private BigDecimal realPayed;

    /**
     * 业务成本
     */
    @Schema(description = "业务成本")
    @ExcelProperty(value = "业务成本")
    private BigDecimal bizCost;

    /**
     * 账户ID
     */
    @Schema(description = "账户ID")
    @ExcelProperty(value = "账户ID")
    private String accountId;

    /**
     * 团购收入
     */
    @Schema(description = "团购收入")
    @ExcelProperty(value = "团购收入")
    private BigDecimal groupBuyIncoming;

    /**
     * 订单创建时间
     */
    @Schema(description = "订单创建时间")
    @ExcelProperty(value = "订单创建时间")
    private LocalDateTime orderCreateTime;

    /**
     * 结算状态
     */
    @Schema(description = "结算状态")
    @ExcelProperty(value = "结算状态")
    private Integer traceSettleStatus;

    /**
     * 合同编号
     */
    @Schema(description = "合同编号")
    @ExcelProperty(value = "合同编号")
    private String contractNumber;

    /**
     * 政府补充金额
     */
    @Schema(description = "政府补充金额")
    @ExcelProperty(value = "政府补充金额")
    private BigDecimal governmentSupplementary;

    /**
     * 交易开始时间
     */
    @Schema(description = "交易开始时间")
    @ExcelProperty(value = "交易开始时间")
    private LocalDateTime dealStartTime;

    /**
     * 政府扣除金额
     */
    @Schema(description = "政府扣除金额")
    @ExcelProperty(value = "政府扣除金额")
    private BigDecimal governmentDeduction;

    /**
     * 券包ID
     */
    @Schema(description = "券包ID")
    @ExcelProperty(value = "券包ID")
    private String voucherPackageId;

    /**
     * 客户名称
     */
    @Schema(description = "客户名称")
    @ExcelProperty(value = "客户名称")
    private String customerName;

    /**
     * 其他收入
     */
    @Schema(description = "其他收入")
    @ExcelProperty(value = "其他收入")
    private BigDecimal otherIncome;

    /**
     * 外部原因
     */
    @Schema(description = "外部原因")
    @ExcelProperty(value = "外部原因")
    private String externalReason;

    /**
     * 交易动作类型
     */
    @Schema(description = "交易动作类型")
    @ExcelProperty(value = "交易动作类型")
    private String tradeActionType;

    /**
     * 流水类型
     */
    @Schema(description = "流水类型")
    @ExcelProperty(value = "流水类型")
    private String traceType;

    /**
     * 数据时间
     */
    @Schema(description = "数据时间")
    @ExcelProperty(value = "数据时间")
    private LocalDateTime dataTime;

    /**
     * 是否政府订单
     */
    @Schema(description = "是否政府订单")
    @ExcelProperty(value = "是否政府订单")
    private Boolean isGovernment;

    /**
     * 不同客户
     */
    @Schema(description = "不同客户")
    @ExcelProperty(value = "不同客户")
    private String differentCustomer;

    /**
     * 退款金额
     */
    @Schema(description = "退款金额")
    @ExcelProperty(value = "退款金额")
    private BigDecimal refund;

    /**
     * 安心吃费用
     */
    @Schema(description = "安心吃费用")
    @ExcelProperty(value = "安心吃费用")
    private BigDecimal safeEatFee;

    /**
     * 佣金比例
     */
    @Schema(description = "佣金比例")
    @ExcelProperty(value = "佣金比例")
    private BigDecimal commissionRate;

    /**
     * 编码
     */
    @Schema(description = "编码")
    @ExcelProperty(value = "编码")
    private String code;

    /**
     * 业务类型
     */
    @Schema(description = "业务类型")
    @ExcelProperty(value = "业务类型")
    private Integer bizType;

    /**
     * 序列号备注
     */
    @Schema(description = "序列号备注")
    @ExcelProperty(value = "序列号备注")
    private String sequenceNoComment;

    /**
     * 账户名称
     */
    @Schema(description = "账户名称")
    @ExcelProperty(value = "账户名称")
    private String accountName;

    /**
     * 商家自配送费
     */
    @Schema(description = "商家自配送费")
    @ExcelProperty(value = "商家自配送费")
    private BigDecimal partnerSelfDeliverFee;

    /**
     * 交易ID
     */
    @Schema(description = "交易ID")
    @ExcelProperty(value = "交易ID")
    private String dealId;

    /**
     * 备注
     */
    @Schema(description = "备注")
    @ExcelProperty(value = "备注")
    private String remark;

    /**
     * 原始流水类型名称
     */
    @Schema(description = "原始流水类型名称")
    @ExcelProperty(value = "原始流水类型名称")
    private String originalTraceTypeName;

    /**
     * 政府总扣除
     */
    @Schema(description = "政府总扣除")
    @ExcelProperty(value = "政府总扣除")
    private BigDecimal governmentTotalDeduction;

    /**
     * 配送绩效ID
     */
    @Schema(description = "配送绩效ID")
    @ExcelProperty(value = "配送绩效ID")
    private String deliverPerformanceId;

    /**
     * 储值卡金额
     */
    @Schema(description = "储值卡金额")
    @ExcelProperty(value = "储值卡金额")
    private BigDecimal savingCardAmount;

    /**
     * 争议补偿
     */
    @Schema(description = "争议补偿")
    @ExcelProperty(value = "争议补偿")
    private String disputeCompensation;

    /**
     * 流水类型显示名称
     */
    @Schema(description = "流水类型显示名称")
    @ExcelProperty(value = "流水类型显示名称")
    private String traceTypeShowName;

    /**
     * 客户ID
     */
    @Schema(description = "客户ID")
    @ExcelProperty(value = "客户ID")
    private String customerId;

    /**
     * 合同名称
     */
    @Schema(description = "合同名称")
    @ExcelProperty(value = "合同名称")
    private String contractName;

    /**
     * 门店ID
     */
    @Schema(description = "门店ID")
    @ExcelProperty(value = "门店ID")
    private String poiId;

    /**
     * 门店城市
     */
    @Schema(description = "门店城市")
    @ExcelProperty(value = "门店城市")
    private String poiCity;

    /**
     * 账户信息
     */
    @Schema(description = "账户信息")
    @ExcelProperty(value = "账户信息")
    private String accountInfo;

    /**
     * 其他收入备注
     */
    @Schema(description = "其他收入备注")
    @ExcelProperty(value = "其他收入备注")
    private String otherIncomeComment;

    /**
     * 原始流水类型
     */
    @Schema(description = "原始流水类型")
    @ExcelProperty(value = "原始流水类型")
    private String originalTraceType;

    /**
     * 门店名称
     */
    @Schema(description = "门店名称")
    @ExcelProperty(value = "门店名称")
    private String poiName;

    /**
     * 交易名称
     */
    @Schema(description = "交易名称")
    @ExcelProperty(value = "交易名称")
    private String dealName;

    /**
     * 是否线下交易
     */
    @Schema(description = "是否线下交易")
    @ExcelProperty(value = "是否线下交易")
    private Boolean dealOffline;

    /**
     * 政府总补充
     */
    @Schema(description = "政府总补充")
    @ExcelProperty(value = "政府总补充")
    private BigDecimal governmentTotalSupplementary;

    /**
     * 服务费优惠
     */
    @Schema(description = "服务费优惠")
    @ExcelProperty(value = "服务费优惠")
    private BigDecimal serviceFeeDiscount;

    /**
     * 周期提示
     */
    @Schema(description = "周期提示")
    @ExcelProperty(value = "周期提示")
    private String periodTips;

    /**
     * 储值卡扣款金额
     */
    @Schema(description = "储值卡扣款金额")
    @ExcelProperty(value = "储值卡扣款金额")
    private BigDecimal savingCardDeductAmount;

    /**
     * 配送费
     */
    @Schema(description = "配送费")
    @ExcelProperty(value = "配送费")
    private BigDecimal deliveryFee;

    /**
     * 原始金额
     */
    @Schema(description = "原始金额")
    @ExcelProperty(value = "原始金额")
    private BigDecimal originalAmount;

    /**
     * 应付金额
     */
    @Schema(description = "应付金额")
    @ExcelProperty(value = "应付金额")
    private BigDecimal due;

    /**
     * 分摊金额
     */
    @Schema(description = "分摊金额")
    @ExcelProperty(value = "分摊金额")
    private BigDecimal sharedAmount;

    /**
     * 服务费
     */
    @Schema(description = "服务费")
    @ExcelProperty(value = "服务费")
    private BigDecimal service;

    /**
     * 合同ID
     */
    @Schema(description = "合同ID")
    @ExcelProperty(value = "合同ID")
    private String contractId;

    /**
     * 是否有代理佣金
     */
    @Schema(description = "是否有代理佣金")
    @ExcelProperty(value = "是否有代理佣金")
    private Boolean hasAgentCommissionAmount;

    /**
     * 对账单类型
     */
    @Schema(description = "对账单类型")
    @ExcelProperty(value = "对账单类型")
    private String checkBillType;

    /**
     * 广告费
     */
    @Schema(description = "广告费")
    @ExcelProperty(value = "广告费")
    private BigDecimal jyeztgAdFee;

    /**
     * 结算类型
     */
    @Schema(description = "结算类型")
    @ExcelProperty(value = "结算类型")
    private String settleType;

    /**
     * 付款计划
     */
    @Schema(description = "付款计划")
    @ExcelProperty(value = "付款计划")
    private Integer payPlan;
}